package net.lcheng.service;

import net.lcheng.commons.utils.PageList;
import net.lcheng.model.BaseShippingCompany;
import net.lcheng.model.OOrder;
import net.lcheng.model.OOrderHistory;
import net.lcheng.model.OOrderRefund;
import net.lcheng.vo.OrderConditionsSelectModel;

import java.util.List;

/**
 * Created by LV on 2016/7/4.
 */
public interface TradeManageService {

    //由店铺ID,shopId和订单状态orderStatus获取所有订单
    PageList<OOrder> getAllOrdersByShopIdAndOrderStatus(int shopId, int orderStatus, int pageSize, int pageIndex);

    //由店铺ID,shopId和订单状态orderStatus获取所有订单
    List<OOrder> getAllOrdersByShopIdAndOrderStatus(int shopId,int orderStatus);

    /**
     * 获取所有订单
     * @param shopId 店铺Id
     * @param buyerUserId 买家用户Id
     * @param orderStatus 订单状态
     * @return list
     */
    List<OOrder> getAllOrders(int shopId,String buyerUserId,int orderStatus);

    //由shopId获取所有订单列表
    PageList<OOrder> getAllOrdersByShopId(int shopId, int pageSize, int pageIndex);

    //由shopId获取所有订单列表
    List<OOrder> getAllOrdersByShopId(int shopId);

    /**
     * 获取所有订单
     * @param shopId 店铺Id
     * @param buyerUserId 买家用户Id
     * @return list
     */
    List<OOrder> getAllOrders(int shopId,String buyerUserId);

    //由订单主键查询订单
    OOrder getOrderByPrimaryKey(String orderId);

    //由订单主键查询订单日志信息
    List<OOrderHistory> getOrderHistoryByOrderId(String orderId);

    //添加订单日志信息
    int addOrderHistory(OOrderHistory orderHistory);

    //获取物流公司列表
    List<BaseShippingCompany> getAllShippingCompany();

    //修改订单信息
    int updateOOrderByPrimaryKey(OOrder order);

    //获取指定店铺的所有退款订单列表
    PageList<OOrderRefund> getAllRefundOrdersByShopId(int shopId,int pageSize,int pageIndex);

    //获取指定店铺的所有退款订单列表
    List<OOrderRefund> getAllRefundOrdersByShopId(int shopId);

    //获取指定的店铺不同状态的退款订单列表
    PageList<OOrderRefund> getAllRefundOrdersByShopIdAndOrderStatus(int shopId,int orderStatus,int pageSize,int pageIndex);

    //获取指定的店铺不同状态的退款订单列表
    List<OOrderRefund> getAllRefundOrdersByShopIdAndOrderStatus(int shopId,int orderStatus);

    /**
     * 获取指定店铺和用户的所有订单
     * @param shopId 店铺Id
     * @param buyerUserId 买家用户Id
     * @return list
     */
    List<OOrderRefund> getAllRefundOrders(int shopId,String buyerUserId);

    /**
     * 获取指定店铺和用户的所有订单
     * @param shopId 店铺Id
     * @param buyerUserId 买家用户Id
     * @param orderStatus 订单状态
     * @return list
     */
    List<OOrderRefund> getAllRefundOrders(int shopId,String buyerUserId,int orderStatus);

    //由主键更新退货订单表
    int updateOOrderRefundByPrimaryKey(OOrderRefund orderRefund);

    //由主键查询退货订单表
    OOrderRefund getOorderRefundByPrimaryKey(String orderRefundId);

    //多条件查询订单
    PageList<OOrder> getOrderListByConditions(int shopId, OrderConditionsSelectModel model, int pageSize, int pageIndex);

    //多条件查询退货订单
    PageList<OOrderRefund> getOrderRefundListByConditions(int shopId, OrderConditionsSelectModel model, int pageSize, int pageIndex);

    //获得指定订单状态对应的订单数
    int getOrderCountByOrderStatus(int shopId,int status);

    /**
     * 买家取消订单
     * @param oOrder 取消的订单
     * @return int
     */
    int cancelOrderByBuyer(OOrder oOrder);

    /**
     * 卖家取消订单
     * @param oOrder 取消的订单
     * @return int
     */
    int cancelOrderBySeller(OOrder oOrder);

    /**
     * 买家取消退款订单
     * @param orderRefund 退款订单信息
     * @return int
     */
    int cancelOrderRefundByBuyer(OOrderRefund orderRefund);

}
